<?php

class Atendimento_InsereController extends Zend_Controller_ActionAquiles{

    public function init() {
        parent::init();
        $this->view->title = 'Adição de Atendimento.';
    }
    
    public function indexAction() {
        $this->view->form = new Application_Form_Atendimento_Insere();
    }

    public function validaAction() {
        $resp = new Util_Function_JsonResponse();
        $form = new Application_Form_Atendimento_Insere(null, true);
        $form->setDefaults($this->_request->getPost());
        $codigo = $form->codigo->getValue();
        
        $dtAtend = $form->dt_atendimento->getValue();
        if (!isset($dtAtend)) {
            $resp->addErro("A 'Data de Atendimento' é obrigatória.");
        }else{
            $zdt = new Zend_Date($dtAtend);
            if(Zend_Date::now()->addDay(-1)->isLater($zdt)){
                $resp->addErro("A 'Data de Atendimento' deve ser a partir de hoje.");
            }
        }
        
        $dtFat = $form->dt_faturamento->getValue();
        if (!isset($dtFat)) {
            $resp->addErro("A 'Data de Faturamento' é obrigatória.");
        }else{
            $zdt = new Zend_Date($dtFat);
            if(Zend_Date::now()->addDay(-1)->isLater($zdt)){
                $resp->addErro("A 'Data de Faturamento' deve ser a partir de hoje.");
            }
        }
        
        $segmento = $form->segmento->getValue();
        if(!isset($segmento) ){
            $resp->addErro(utf8_encode("O 'Segmento' é obrigatório."));
        }
            
        $hora = $form->hora->getValue();
        if(!isset($hora)){
            $resp->addErro("A 'hora' é obrigatória.");
        }else if(isset($hora) && isset($segmento)){
            $item = Application_Model_SegmentoAgenda::getInstance()->getHoraBySegmento($hora,$segmento);
            if(!isset($item) || count($item)== 0){
                $resp->addErro("A 'Hora' escolhida não consta no cadastro.");
            }
        }
        
        $valor = $form->valor->getValue();
        if(!isset($valor) ){
            $resp->addErro("O 'Valor' é obrigatório.");
        }
        
        $funcionario = $form->funcionario->getValue();
        if(!isset($funcionario) ){
            $resp->addErro("O 'Profissional' é obrigatório.");
        }
        
        $atividade = $form->atividade->getValue();
        if(!isset($atividade) ){
            $resp->addErro("A 'Atividade' é obrigatória.");
        }
        
        echo Zend_Json::encode(array("erros" => $resp->getErros()), Zend_Json::TYPE_OBJECT);
        die();
    }

    public function novoAction() {
        $form = new Application_Form_Atendimento_Insere(null,true);
        $form->setDefaults($this->_request->getPost());
        $codigo = $_POST['codigo'] == 0 ? null : $_POST['codigo'];
        $model = Application_Model_Atendimento::getInstance();
        $modelContas = Application_Model_ContasReceber::getInstance();
        $session = new Zend_Session_Namespace('msg');

        $atendimento = $form->getValues();
        if(isset($codigo)){
            $model->update($form->getValues());
            $modelContas->update($this->getContasReceber($atendimento));
            $msg['msg1'] = 'Atendimento modificado com sucesso.';
        }else{
            $atendimento['codigo'] = $model->insert($form->getValues());
            $modelContas->insert($this->getContasReceber($atendimento));
            $msg['msg1'] = 'Atendimento adicionado com sucesso.';
        }
        $session->msgs =$msg;
        echo Zend_Json::encode(array('msg'=>'ok'));
        die();
    }

    public function deleteAction() {
        $codigo = $this->_request->getParam('codigo');
        $erros = new Util_Function_JsonResponse();
        $mensage = '';
        if(!isset($codigo) || !empty ($codigo)){
            if(is_numeric($codigo)){
                $model = Application_Model_Atendimento::getInstance();
                $exist = $model->getById($codigo);
                if(isset($exist) && !is_null($exist)){
                    $model->remove($codigo);
                    $msg['msg1'] = 'Atendimento excluído com sucesso.';
                    $session = new Zend_Session_Namespace('msg');
                    $session->msgs =$msg;
                }else{
                    $erros->addErro('O atendimento não existe.');
                }
            }else{
                $erros->addErro('É preciso enviar um código de atendimento.');
            }
        }else{
            $erros->addErro('É preciso enviar um código de atendimento.');
        }
            
        if($erros->getErros() != null && count($erros) > 0){
            echo Zend_Json::encode(array("erros" => $resp->getErros()), Zend_Json::TYPE_OBJECT);
        }else{
            echo Zend_Json::encode(array('msg'=>'ok'));
        }

        die;
    }
    
    private function getModulesAcess($data){
        $retorno;
        $modulos = Application_Model_Modulo::getInstance()->getModulosListaCodigo();
        
        foreach ($modulos as $value) {
            $item['modulo'] = $value['codigo'];
            
            if(isset($data['modulo_ed']) && array_search($value['codigo'], $data['modulo_ed']) !== false){
              $item['edicao']='S';
            }else{
              $item['edicao']='N';
            }
            if(isset($data['modulo_con']) && array_search($value['codigo'], $data['modulo_con']) !== false){
              $item['consulta']='S';
            }else{
              $item['consulta']='N';
            }
            $retorno[]=$item;
        }
        
        return $retorno;
    }
    
    private function getContasReceber($atendimento){
        $nome = Application_Model_Usuario::getInstance()->getById($atendimento['paciente']);
        $nomeClie ='';
        
        if(isset($nome) && count($nome) > 0 ){
            $nomeClie = $nome['nome'];
        }
        
        $conta['descricao'] = 'Atendimento - '.$nomeClie. ' - ' .$atendimento['dt_cadastro'];
        $conta['dt_cadastro'] = $atendimento['dt_cadastro'];
        $conta['atendimento'] = $atendimento['codigo'];
        $conta['dt_faturamento'] = $atendimento['dt_faturamento'];
        return $conta;
    }

}